A CDMA receiver processes an incoming signal to identify several multi-path components of a transmission, and then combines these components in recovering the symbols. A very simplified view of a conventional CDMA receiver is presented in FIG. 1. A signal is received by antenna 10 and processed by filter 12 and A/D converter 14. The samples 15 output by the A/D converter are stored in a small antenna buffer 16.
There are a set of finger data de-spreaders 22, 24, . . . , 26 (only three shown), one for each multi-path being tracked. The finger symbol de-spreading is done first in these finger de-spreaders 22, 24, . . . , 26 and the results are stored in finger data symbol buffers 28, 30, . . . , 32. Pilot de-spreading is stored in finger pilot symbol buffers 23, 25, 27 which are used by channel estimators 29, 31, 33 to generate channel estimates. An MRC combiner 36 takes its input from the finger symbol buffers 28, 30, . . . , 32 and from the channel estimators 29, 31, 33 and outputs symbols 38. Similarly, user M symbols are shown being output at 40.
The design of FIG. 1 is not appropriate for multi-user reception because since separate finger symbol buffer storage space is required for each finger of each user, a large overall finger symbol buffer would be required if the number of users in one modem is large. Since the antenna buffer is small, the finger timing adjustment is difficult, and may result in degraded performance.
In the CDMA receiver of the base station, the time critical and computation intensive tasks are the users' finger de-spreading, channel estimation and maximum ratio combining (MRC). Any improvement in the efficiency of performing these tasks would be beneficial. For a given amount of hardware/software resources, an efficient architecture would produce increased finger processing capacity and lower cost per channel element. A main disadvantage of using a small front antenna buffer is the need for multiple buffers to store intermediate results, such as finger symbols, pilot symbols, etc., and the problem of transferring and processing large amounts of data between components.